package emailconfig

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"strings"
)

type Config struct {
	Subject   string `json:"subject"`
	SubjectTo string `json:"subjectTo"`
	StrFrom   string `json:"strFrom"`
	StrTo     string `json:"strTo"`
}

type ConfigSelf struct {
	StrStmpServer string `json:"StrStmpServer"`
	StrPOP3Server string `json:"StrPOP3Server"`
	StrUserName   string `json:"StrUserName"`
	StrPass       string `json:"StrPass"`
	IStmpPort     int    `json:"IStmpPort"`
	IPOP3Port     int    `json:"IPOP3Port"`
	TLSEnabled    bool   `json:"TLSEnabled"`
}

// 使用空接口作为参数和返回类型，允许任何类型被传递和返回
func ReturnList(values ...interface{}) []interface{} {
	return values
}

// 公共函数，可以被其他包访问
func Add(a, b int) int {
	return a + b
}

func GetEmilConfig() []Config {
	data, err := ioutil.ReadFile("config.json")
	if err != nil {
		log.Fatalf("Error reading config file: %v", err)
	}

	var config []Config
	err = json.Unmarshal(data, &config)
	if err != nil {
		log.Fatalf("Error parsing JSON: %v", err)
	}
	return config
}

func GetEmilConfigSelf() ConfigSelf {
	data, err := ioutil.ReadFile("configself.json")
	if err != nil {
		log.Fatalf("Error reading config file: %v", err)
	}

	var config ConfigSelf
	err = json.Unmarshal(data, &config)
	if err != nil {
		log.Fatalf("Error parsing JSON: %v", err)
	}
	return config
}

func ArraryMap(listConfig []Config) map[string]Config {
	m := make(map[string]Config)
	for _, config := range listConfig {
		fmt.Println("转发邮件配置：主题=", config.Subject, "自己邮箱地址=", config.StrFrom, "接收邮件地址=", config.StrTo)

		m[strings.TrimSpace(config.Subject)] = config
	}
	return m
}
